package com.hsl.housaileibot001.service;

import com.hsl.housaileibot001.model.User;
import com.hsl.housaileibot001.model.dto.RefreshTokenDTO;
import com.hsl.housaileibot001.model.dto.UserLoginDTO;
import com.hsl.housaileibot001.model.dto.UserRegisterDTO;
import com.hsl.housaileibot001.model.vo.LoginVO;
import com.hsl.housaileibot001.model.vo.UserInfoVO;

/**
 * 用户服务接口
 */
public interface UserService {

    /**
     * 用户登录
     *
     * @param loginDTO 登录信息
     * @return 登录结果（包含token和用户信息）
     */
    LoginVO login(UserLoginDTO loginDTO);

    /**
     * 刷新Access Token
     *
     * @param refreshTokenDTO 刷新token请求
     * @return 新的Access Token
     */
    String refreshToken(RefreshTokenDTO refreshTokenDTO);

    /**
     * 获取当前登录用户信息
     *
     * @return 用户信息
     */
    UserInfoVO getCurrentUser();

    /**
     * 退出登录（删除refresh token）
     *
     * @param refreshToken refresh token
     */
    void logout(String refreshToken);

    /**
     * 根据用户名查找用户
     *
     * @param username 用户名
     * @return 用户
     */
    User findByUsername(String username);

    /**
     * 用户注册
     *
     * @param registerDTO 注册信息
     * @return 注册结果（包含token和用户信息）
     */
    LoginVO register(UserRegisterDTO registerDTO);
}

